import {defineStore} from 'pinia'
import {getproducts,IProduct} from '../api/shop'

export const useProductsStore = defineStore('products',{
  state:()=>{
    return {
      all:[] as IProduct[]  //所有商品列表  as  作为,转换的意思
    }
  },

  getters:{},

  actions:{
    //  async 用于申明一个 function 是异步的，而 await 用于等待一个异步方法执行完成。
    async loadAllProducts (){
      const ret = await getproducts()
      this.all = ret
    },
    decrementProduct(product:IProduct){
      // 更改find()返回的值，原数组也会被改变
      // 请记住，传播一个对象是一个浅拷贝，这意味着如果你有一个嵌套的对象，那么它不会被复制，而是被引用
      const ret = this.all.find(item=> item.id == product.id)
      if(ret){
        ret.inventory--
      }
    }

  },
})